#ifndef GRAHAM_AUX
#define GRAHAM_AUX
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <iostream>
#include <math.h>
#include <algorithm>
#include <vector>
#include "QVector"

/// ////////////////////////////////// ///
/// ///////// Classe "Ponto" ///////// ///
/// ////////////////////////////////// ///
class Ponto
{
public:
    Ponto(double x = 0,double y = 0);
    double x;
    double y;
    void setX(double x);
    void setY(double y);
    double val;
    void setVal(double x);
    Ponto operator-(Ponto b);
    Ponto operator*(double x);
};
/// ////////////////////////////////// ///
/// ///////// Classe "Ponto" ///////// ///
/// ////////////////////////////////// ///

QVector<Ponto> gerarPontosAleatorio(int n,double maxX,double maxY);
void imprimePontos(QVector<Ponto> pts);
Ponto baricentro(QVector<Ponto> pts);
Ponto normaliza(Ponto);
double angulo(Ponto a,Ponto b); // angulo entre 2 vetores NORMALIZADOS
QVector<Ponto> valoraPontos(QVector<Ponto> pts);
bool compare (Ponto i,Ponto j);
bool compEqual(Ponto i,Ponto j);
std::vector<Ponto> geraPolEstrelado(QVector<Ponto>);
double prodVet(Ponto a,Ponto b,Ponto c);
double distanceFromLine(Ponto p,Ponto p1,Ponto p2);
double scaleProd(Ponto a,Ponto b);

#endif // GRAHAM_AUX
